#ifndef _RANDOM_H_
#define _RANDOM_H_

/**
 * @file   Random.h
 * @author Jinsong Du <jdu@linuxdu.gfed.net>
 * @date   Mon Jul 28 17:13:02 2008
 * 
 * @brief  Random interface
 * 
 * Concrete Random classes should implement this interface.
 */

class Random
{
public:
    Random() {};
    virtual ~Random() {};
    /** 
     * Get next integer random value based on Mod, 
     * programmer should provide Mod when you want to do a Modulo operation on the random number
     * 
     * @param Mod Modulo
     * 
     * @return unsinged long as random value
     */
    virtual unsigned long nextInt(unsigned long Mod = 0) = 0;
};

#endif /* _RANDOM_H_ */
